ros入门学习(一)
最近一段时间对ros进行了初步的使用和学习,其中产生的一些问题和实现过程借助博客来进行记录与回顾
q1:
1.E: 无法获得锁 /var/lib/dpkg/lock-frontend – open (11: 资源暂时不可用)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
原因是在运行进程之前,有之前未关闭的进程仍在运行,因此解决思路是杀死原有进程。
1.方法一:
ps 查看正在进行的进程
然后:
$sudo kill a
$sudo kill b
杀死原有进程,但是这样有时候不管用。
2.方法二:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
在多次查询后,发现18.01系统下,方法三可以稳定解决error11.
**3.方法三(较为有效,基本都可以解决)
sudo rm /var/lib/dpkg/lock-frontend
终于成功。
q2:
**话题通信实现要点
**发布方
1、头文件
2.初始化节点
3.创建句柄
4.创建发布者对象
5.编写发布逻辑
**订阅方
1、头文件
2.初始化节点
3.创建句柄
4.创建订阅对象
5.处理订阅数据
6.声明spin()
q3:自定义msg
没有那个文件或目录
在ubuntu 64位下运行 ./xxx 会显示没有这个文件或者目录,但是主文件夹中又有这个文件。
原因是没有32位的运行库 ia32-libs ,直接安装即可。
用命令sudo apt-get install ia32-libs。
q4 couldn’t find executable错误
找了很多解决办法
最后在编译过程中选择
catkin make isolated:build时可以成功运行出demo03_pub_person
catkin make:build则不可以
8.12补充:
之前失败的原因找到应该是如下:
编译过程中选择两种其一即可,两种编译都进行过后会产生devel,devel_isolated和build,build_isolated
前后两种分别都出现冗余,因此,找到文件夹中的development——isolated和build——isolated,删除之,之后再未出现有该类错误。
q5参数服务器
*修改参数:可在原有参数下重新设置参数,值会覆盖。
使用的api:ros::param
*查询参数
参数服务器操作之查询_C++实现:
在 roscpp 中提供了两套 API 实现参数操作
ros::NodeHandle(6个)
和ros::param (同上)
*删除参数
ros::NodeHandle
deleteParam(“键”)
删除成功,返回 true,否则返回 false
ros::param
del(“键”)
删除成功,返回 true,否则返回 false
q6命令实现
*rosnode
*rostopic
*rosservice
*rosmsg
*rossrv同上
*rosparam
q7小乌龟实操实现
*话题发布控制乌龟运动轨迹
1话题与消息获取
获取消息类型
rostopic type /turtle1/cmd_vel
获取消息格式
rosmsg info geometry_msgs/Twist
获得的消息格式为
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
2.实现发布节点
添加依赖包 roscpp rospy std_msgs geometry_msgs
编辑乌龟运动的线速度,角速度使得乌龟做匀速圆周运动。
3.启动乌龟显示节点;
执行运动控制节点,完成乌龟的圆周运动。
*话题订阅实现获取乌龟位姿信息
1.获取话题消息、消息格式。
话题/turtle1/pose
消息turtlesim/Pose
由
rosmsg info turtlesim/Pose
获取格式
float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocity
2.构造dopose函数获取节点信息。
void doPose(const turtlesim::Pose::ConstPtr& p)
3.启动乌龟显示节点,执行运动控制节点,乌龟位姿订阅节点,最终获取到乌龟当前的位姿信息。
*调用服务新增小乌龟
1.获取服务名称与消息
通过rossrv获取消息格式
rossrv info turtlesim/Spawn
格式为
float32 x
float32 y
float32 theta
string name
---
string name
2.添加依赖包 roscpp rospy std_msgs turtlesim,编辑客户端实现
3.运行相关节点,实现小乌龟添加。
*设置参数改变小乌龟背景颜色
1.获取参数
rosparam list
参数为
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
2.在C++文件中对颜色参数进行修改。
3.执行相关节点,完成对背景颜色的修改。