添加链接描述
目录
创建catkin工作空间
小乌龟turtlesim节点
启动节点
turtlesim节点
turtlesim 话题与消息
查看话题的消息类型
查看消息类型的具体内容
查看话题的值
改变背景颜色
获取参数列表
获取参数值
修改颜色
控制乌龟运动
通过发布话题控制乌龟运动
通过键盘控制乌龟运动
通过服务控制乌龟的移动
上次安装成功ROS之后,先确认一下ROS的安装环境正确:
env | grep ROS
result:
-
ROS_VERSION
=
1
-
ROS_PYTHON_VERSION
=
3
-
ROS_PACKAGE_PATH
=
/opt
/ros
/noetic
/share
-
ROSLISP_PACKAGE_DIRECTORIES
=
-
ROS_ETC_DIR
=
/opt
/ros
/noetic
/etc
/ros
-
ROS_MASTER_URI
=http:
/
/localhost:
11311
-
ROS_ROOT
=
/opt
/ros
/noetic
/share
/ros
-
ROS_DISTRO
=noetic
创建catkin工作空间
其实就是创建一个文件夹,然后在这个文件夹下,我们可以生成或者修改现有的catkin工作空间。输入以下命令就可以创建catkin工作空间:
-
mkdir -p ~/catkin_ws/src
-
cd ~/catkin_ws/src
-
catkin_init_workspace
注意这个时候其实工作空间是空的,但是还是可以编译它:
-
cd ~/catkin_ws/
-
catkin_make
在这一步之后最好是可以加载在devel文件夹下的源文件 setup.bash,也可以一步到位直接在.bashrc里面加入加载源文件的命令,这样不用每次都加载一遍:
-
echo
"source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
-
source ~/.bashrc
使用以下命令确认源文件加载成功:
echo $ROS_PACKAGE_PATH
输出应该为:
这里 ubuntu是安装时的用户名,上一篇安装ubuntu桌面版的时候默认用户名就是ubuntu了。
小乌龟turtlesim节点
启动节点
首先打开一个终端窗口,输入以下命令启动ROS节点管理器:
roscore
结果为:
然后再打开一个终端(不要关闭当前窗口),运行以下命令:
rosrun turtlesim turtlesim_node
执行输出类似:
然后会弹出turtlesim的界面如图:
然后将这几个终端最小化,记得不要关闭这两个终端。
turtlesim节点
新打开一个终端,输入如下命令找出所有的活动节点:
rosnode list
输出如下:
这里可以看到我们已经成功启动了 /turtlesim 节点。
如果需要查看turtlesim节点发布的话题、订阅话题和服务等内容,可以输入:
rosnode info /turtlesim
结果如图:
在publications下面可以看到,/turtlesim 发布了两个话题: /turtle1/color_sensor 和 /turtle1/pose, 分别控制了乌龟界面的北京颜色和乌龟在界面上的位置坐标,它们的消息类型分别是 [turtlesim/Color] 和 [turtlesim/Pose] 。
在Subscriptions下面可以看到 /turtlesim 订阅了一个未知类型的话题 turtle1/cmd_vel
turtlesim 话题与消息
输入如下命令来查看 /turtlesim 的话题:
rostopic list
输出结果为:
查看话题的消息类型
输入 rostopic type 命令查看话题类型,例如:
rostopic type /turtle1/color_sensor
输出结果为:
turtlesim/Color 为 /turtle1/color_sensor这一话题的消息类型 (ROS消息类型命名格式:[package name]/[message type]
查看消息类型的具体内容
刚刚看到话题 /turtle1/color_sensor 的消息类型为 turtlesim/Color , 可以通过 rosmsg shw命令来查看它的具体内容:
rosmsg show turtlesim/Color
输出结果为:
也就是说这里使用 unit8 来表示背景的RGB颜色。
查看话题的值
比如说想要查看背景的RGB颜色,或者小乌龟的位置,可以用 rostopic echo 命令,例如:
rostopic echo /turtle1/color_sensor
终端会持续输出如图:
直到按下 Ctrl+C才会停止。
改变背景颜色
获取参数列表
通过rosparam list 命令获取 /turtlesim 节点的参数列表:
rosparam list
输出为:
获取参数值
通过 rosparam get / 命令获得参数服务器上所有参数的数值:
rosparam get /
输出结果为:
注意这里的RGB数值和之前用 rostopic echo [topic name] 得到的数值相同。
修改颜色
通过 rosparam set 可以修改颜色:
-
rosparam
set turtlesim/background_b 0
-
rosparam
set turtlesim/background_g 0
-
rosparam
set turtlesim/background_r 255
-
rosservice call /clear
可以看到背景变成了红色:
控制乌龟运动
红色的背景感觉有点刺眼,这里我关闭了之前的 turtlesim节点并结束了roscore 节点管理器。这里重新启动一下:
在终端一中运行:
roscore
在第二个终端中运行:
rosrun turtlesim turtlesim_node
得到:
(每次还都是不一样的小乌龟)
通过发布话题控制乌龟运动
之前提到 /turtlesim 节点订阅了一个位置类型的话题 turtle1/cmd_vel,这里先用 rostopic type来确定一下这个话题的消息类型,在一个新的终端窗口中运行如下命令:
rostopic type /turtle1/cmd_vel
得到:
运行如下命令确定该消息的数据格式:
rosmsg show geometry_msgs/Twist
得到输出:
可以看到我们可以规定的是乌龟的线速度和角速度,这里要注意在二维空间中,允许的运动是沿 x 方向的直线运动或者是沿 z (垂直于电脑屏幕)的旋转运动。比如说:规定线速度为 2m/s, 角速度为 1.8 rads/s,那么命令如下:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
需要一个稳定的频率为1Hz的指令流才能保持移动状态。我们可以使用rostopic pub -r命令来发布源源不断的命令,1 代表 1Hz 的 速度指令发布频率。可以看到命令发布之后小乌龟开始做圆周运动:
通过 Ctrl+C停止圆周运动
通过键盘控制乌龟运动
在上面控制乌龟做圆周运动的终端重,输入以下命令:
rosrun turtlesim turtle_teleop_key
命令执行后显示:
然后就可以通过键盘的方向键来控制乌龟运动,方向键上下控制前后移动,左右控制移动方向:(注意这里需要活跃界面为这个终端窗口,而不是小乌龟的显示界面,如果鼠标电机小乌龟的显示界面 turtlesim 窗口,然后再用键盘控制,将不可用。)
结束后可以按q退出键盘控制。
通过服务控制乌龟的移动
首先通过 /turtle1/Pose 话题来获得乌龟的位置信息:
执行:
rostopic type /turtle1/pose
得到输出为:
然后执行:
rosmsg show turtlesim/Pose
输出:
然后可以通过以下命令得到乌龟的位置坐标、方位角度(theta)和速度参数:
rostopic echo /turtle1/Pose
输出为:
这里需要注意这个小乌龟的原点在 TurtleSim 窗口的左下角。
然后我们就可以实用 rosservice 来移动乌龟,格式为: rosservice call <service name><service arguments>
比如服务 /turtle1/teleport_absolute 可以控制绝对位置的移动,这一服务的 service arguments 包含 x,y 坐标和方位角。例如将乌龟移动到绝对坐标 [1, 1] ,方位角为0,那么运行以下命令:
rosservice call /turtle1/teleport_absolute 1 1 0
执行结果如图:
可以看到乌龟移动到了绝对坐标 [1, 1] 的位置,并且头朝向是方位角为0的位置。
服务 /turtle1/teleport_relative 可以控制相对位置的移动,这一服务的 service arguments 包含移动距离和角度。例如将乌龟从绝对坐标 [1, 1] 移动到绝对坐标 [2, 1] ,那么相对位置移动了1,角度为 0 。运行以下命令:
rosservice call /turtle1/teleport_relative 1 0
运行结果如下图:
可以看到完成了相对位置的移动。大家也可以自己改变这两个服务的角度或者位移量(坐标值)来看看不同的数值对小乌龟位置的影响。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420359.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!