热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)

话不多说,直接上步骤1.创建工作空间1.1创建工作空间工作空间其实就是一个目录,我们命名为test_ws,并且在该目录下创建一个src文件夹,终端命令如下,文件结构图如下。#mkd

 话不多说,直接上步骤

1. 创建工作空间


    1.1 创建工作空间

工作空间其实就是一个目录,我们命名为test_ws,并且在该目录下创建一个src文件夹,终端命令如下,文件结构图如下。


# mkdir是创建目录,-p是递归创建子目录
mkdir -p test_ws/src

    1.2 创建功能包

我们这里新建一个rabbot_base_control文件夹放置可执行代码,创建两个子目录launch和scripts,并创建CMakeLists.txt和

package.xml文件,CMakeLists.txt和package.xml都是设置工作空间编译所需的配置文件,具体如何使用以及指令的含义,

可以网上自行搜索了解一下哈,这里就不细讲了,终端命令和文件结构如下所示。

# 博客中新建文件或文件夹都是相对位置,所以要先进入到相应位置
cd test_ws/src/
mkdir rabbot_base_control
cd rabbot_base_control
# 创建launch和scripts文件夹
mkdir launch
mkdir scripts
# 创建CMakeLists.txt和package.xml文件
touch CMakeLists.txt
touch package.xml

    1.3 编写python代码文件

我们先在scripts文件夹下创建一个base_control.py文件,并在里面编写一点python代码,终端命令和python代码如下所示

cd scripts/
touch base_control.py
# 使用gedit编辑文件,也可以用vim
gedit base_control.py

 

    1.4 编写launch文件

在launch文件夹下创建一个base_control.launch文件,并在里面添加如下内容,终端命令和添加内容如下所示

# 先返回到上级目录,再进入launch文件夹
cd ..
cd launch
touch base_control.launch
gedit base_control.launch

    1.5 编写CMakeLists.txt文件

# 简单说明
# catkin_package()表明该文件夹是可以被catkin_make编译的功能包
# install(PROGRAMS)表明什么文件会被作为程序编译运行
# install(DIRECTORY)表明什么文件夹会被考虑

    1.6 编写package.xml文件

# 简单说明
这些标签都是必须在xml文件中添加的(你可以尝试不添加其中某个标签),内容根据情况填写即可。
但是标签中的内容必须包含 catkin,后期才可以编译成功,编译报错如下。

    1.7 编译工作空间

进入test_ws工作空间位置,然后使用catkin_make命令,终端命令如下

# 进入test_ws工作空间目录
cd ~/test_ws/
# 对工作空间进行编译
catkin_make

 

编译后工作空间下和src文件夹同级多了devel和build两个文件夹,src目录下增加了一个CMakeLists.txt,是一个链接文件

       

    1.8 运行launch文件

此时我们直接运行launch文件会发现是有错的,如下,提示我们不是一个launch文件。

is neither a launch file in package nor is a launch file name

解决:是不是记起来我们需要在bashrc文件中配置环境信息啦

# 编写bashrc文件内容,在bashrc文件最后一行添加 source /home/你的用户名/test_ws/devel/setup.bash
sudo gedit ~/.bashrc
# 更改退出后,使用如下命令更新一下bashrc环境信息
source ~/.bashrc

更改配置文件后,需要关闭目前终端,重新打开一个,此时运行launch文件,我们会发现还有下图的错误,

ERROR: cannot launch node of type [*/*.py]: can't locate node [*.py] in package

如果没有就跳过此步

错误是说无法在rabbot_base_control包中定位到base_control.py文件,经过网上搜索了解到,原因是我们编写的python文件

无法作为可执行文件,我们右键base_control.py文件,然后选择“Permissions”选项,勾选“Allow executing file as program”即可

勾选后我们再运行launch文件可以正常运行,并且输出了我们代码的提示信息“Workspace successfully be created”


附录. X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)

问题:具体的报错当时忘记截图了,这一行是我当时从终端复制去网上搜索的内容,出现类似问题可以试试

解决:在 /etc/environment 文件末尾设置环境变量 QT_X11_NO_MITSHM = 1,终端命令和添加位置如下图

# 使用gedit打开environment文件
sudo gedit /etc/environment

 



推荐阅读
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
author-avatar
情调
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有