在ROS程序中我们可以使用dynamic_reconfigure这个包实现动态调参,无需重新编译程序。
planeSegcfg内容如下:
修改cfg权限
在CMakeLists文件中添加:
添加头文件:
修改主函数:
使用 boost::bind 给回调函数传递动态参数
boost::bind(f,x,y) = f(x,y)
_1,_2表示占位符
修改CMakelists文件:
修改packagexml文件:
编译
运行程序
计算图级-------是 ROS 处理数据的一种点对点的网络形式。程序运行时,所有进程及它们所进行的数据处理,将会通过一种点对点的网络形式表现出来,即通过节点、节点管理器、话题、服务等来进行表现。
ROS 中的基本计算图级概念包括:节点、节点管理器、参数服务器、消息、服务、话题和包。这些概念以各种形式来提供数据。
ros 命令的说明及参数可以通过 < 命令 > -h (或 --help )来查看
例如: rosnode -h
用键盘控制小海龟运动这一过程的通信机制是怎样的呢其实,这两个节点是通过一个 ROS 话题( Topic )来相互通信的, turtle_teleop_key 在这个话题上发布键盘输入的的消息,而 turtlesim 则订阅该话题以接收该消息。下面通过 rqt 功能包和 rostopic 命令来查看相关信息:
2, rostopic list :能够列出所有当前订阅和发布的话题。
先看一下 rostopic list 子命令需要哪些参数。运行命令:
rostopic list -h
使用 verbose 选项,以列出相关话题的详细信息。运行命令:
rostopic list -v
显示了有关所发布和订阅的话题的详细信息,其中方括号中表示的是话题的类型。
3, rostopic type :用来查看所发布话题的消息类型。
用法: rostopic type [topic] 运行如下命令:
rostopic type /turtle1/cmd_vel
上面的 geometry_msgs/Twist 即为话题 /turtle1/cmd_vel 的消息类型,这在执行命令 rostopic list -v 时
也有所体现。
下面用 rosmsg 命令来查看消息的详细情况:
rosmsg show geometry_msgs/Twist
4, rostopic pub :把数据发布到当前某个正在广播的话题上。通过此命令可以通过直接在终端发送命令来控制小海龟
用法: rostopic pub [topic] [msg_type] [args]
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[20, 00, 00]' '[00, 00, 18]'
在我看来,ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间通信方便,就连不同设备间通信也很方便,只需添加几行代码,你就可以实现多电脑间的 Topi c共享, 远程控制等功能。下面就让我们一起来实现吧!
这里假设我们有两个电脑:电脑 A 为主机端,电脑 B 为控制端。最终要实现在 A 电脑上运行roscore,并且运行 Turtlesim 程序,然后在 B 电脑上运行键盘控制程序,控制 Turtlesim 小乌龟移动。
1 查看电脑A和电脑B的 IP 和 Hostname
查看IP,在控制台输入:
$ ifconfig
如果电脑连接的时有线网,则显示结果中,etho 部分的 inet addr 后面就是该电脑的 IP 地址;
如果电脑连接的是无线,则 wlp3s0 部分的 inet addr 后就是 IP 地址。
查看 Hostname,在控制台输入:
$ hostname
2 修改hosts文件内容
使用如下指令,分别在电脑A和电脑B的打开 hosts 文件:
$ sudo gedit /etc/hosts
在电脑A端的 hosts文件 中添加如下加粗指令:
复制代码
127001 localhost
127011 [ hostname_A ]
[IP_A] [ hostname_A ]
[IP_B] [ hostname_B ]
复制代码
同理,在电脑B端的 hosts 文件中,加入如下加粗指令:
复制代码
127001 localhost
127011 [ hostname_B ]
[IP_B] [ hostname_B ]
[IP_A] [ hostname_A ]
复制代码
3 修改 bashrc 文件
使用如下指令,分别在电脑A和电脑B的打开 bashrc 文件
$ sudo gedit ~/bashrc
在电脑A端和电脑B端打开的 bashrc 文件的最后一行,加入如下代码:
export ROS_MASTER_URI=>
网址: >
以上就是关于ROS动态调参总结全部的内容,包括:ROS动态调参总结、ROS 计算图级,理解ROS 节点、话题、ROS怎样实现在两台电脑间进行数据通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)