ros初始化
新建 Vt 目录,初始化Vt目录,然后在Vt目录下新建包,可以参考一下命令
进入工作空间,建立简单的可用于catkin_make编译的catkin包
1 | $ cd ~/catkin_ws |
编译包:
1 | $ cd ~/catkin_ws |
在Vt 目录下,当新建一个包时候,要重新catkin_make一下 Vt文件夹。
ros建包
先是 (我目录的反斜杠可能写错 别在意)
1 | cd VtClass/src |
然后
1 | catkin_create_pkg VtImg2txt cv_bridge image_transport roscpp rospy std_msgs |
第2个参数是包的名字
后面的参数是包的依赖(有可能有多余的包依赖 不过没关系啦~),若之后要添加包依赖,要更改 package.xml,CMakeList 文件
因为我们用的是Python代码
然后我们继续
1 | cd VtImg2txt |
里面有这样些文件
(除了scripts文件夹)
然后我们就要建立scripts文件夹
1 | mkdir scripts |
把VtImg2txt.py放进去这个文件夹里
然后还要改一下权限
1 | cd scripts |
另外把VtController.py覆盖一下(在VtClass/src/VtController/scripts里面)
在py文件中添加:
1 | #!/usr/bin/python |
运行ros
rosrun + 包名 + 节点名
roslaunch + 包名+ 节点名
roscore 开启ros核
注意,开启ros程序有几种方法:
- 先运行roscore,然后运行所有的rosrun
- 将所有要开启的rosrun添加到launch文件中,直接执行roslaunch
- 先开启roslaunch,再开启rosrun
两台电脑Ros通信
在我看来,ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间通信方便,就连不同设备间通信也很方便,只需添加几行代码,你就可以实现多电脑间的 Topi c共享, 远程控制等功能。下面就让我们一起来实现吧!
这里假设我们有两个电脑:电脑 A 为主机端,电脑 B 为控制端。最终要实现在 A 电脑上运行roscore,并且运行 Turtlesim 程序,然后在 B 电脑上运行键盘控制程序,控制 Turtlesim 小乌龟移动。
查看电脑A和电脑B的 IP 和 Hostname
查看IP,在控制台输入:
1 | $ ifconfig |
如果电脑连接的时有线网,则显示结果中,etho 部分的 inet addr 后面就是该电脑的 IP 地址;
如果电脑连接的是无线,则 wlp3s0 部分的 inet addr 后就是 IP 地址。
查看 Hostname,在控制台输入:
1 | $ hostname |
修改hosts文件内容
使用如下指令,分别在电脑A和电脑B的打开 hosts 文件:
1 | $ sudo gedit /etc/hosts |
在电脑A端的 hosts文件 中添加如下指令:
1 | 127.0.0.1 localhost |
同理,在电脑B端的 hosts 文件中,加入如下指令:
1 | 127.0.0.1 localhost |
修改 .bashrc 文件
使用如下指令,分别在电脑A和电脑B的打开 .bashrc 文件
1 | $ sudo gedit ~/.bashrc |
在电脑A端和电脑B端打开的 .bashrc 文件的最后一行,加入如下代码:
1 | export ROS_MASTER_URI=http://[hostname_A]:11311 |
[注意] 此处假设电脑A为主机,如果改成电脑B为主机,则只需要将此步中的 [hostname_A] 改成 [hostname_B] 即可。
运行小乌龟程序
电脑A端:
1 | 首先启动 ROS:$ roscore |
电脑B端:
1 | $ rosrun turtlesim turtle_teleop_key |
现在,你就可以用电脑 B 控制电脑 A 中的小乌龟尽情遨游啦! ~(≧▽≦)/~啦啦啦