Link ROS发布:云主题可视化和日志记录支持ROS1Melodic和ROS2Dashing 译
越来越多的ROS内容在云端混合展开,并全面支持ROS2,关于ROS官网有如下建议:
对于支持ROS1和ROS2的项目,什么时候把GitHub的默认分支从ROS1移到ROS2是合适的。考虑到Noetic即将发布,而且最后一个ROS1版本也即将发布,现在是考虑将所有的默认行为迁移到ROS2的好时机。这既是出于实用的原因,因为大多数新的开发可能都应该在ROS2中进行,同时也是为了突出早期的朋友们在将包迁移到ROS2中所做的伟大工作。将默认的分支作为ROS2的LTS发行版来发布,是一个信号,表明这个项目可以在ROS2中工作。如果很多项目都这样做了,他们会认为这是一个运动,而事实就是如此。
所以建议,对于所有的 ros-* 仓库或更大的项目,与其把默认的分支从 melodic-devel -> noetic-devel 改成 foxy-devel,不如把它们迁移到 foxy-devel。有段时间以来,我已经让我所有的非ros-*版本的项目都这样做了,但现在看来,Foxy似乎是时候把所有的项目都迁移到foxy版本了。
关于命名:
随着《ROS 2 Foxy Fitzroy》的发售日期越来越近,需要开始为《ROS 2 G海龟》的发售名称进行头脑风暴。
现有的ROS 2名称和代号:
- Ardent Apalone - ardent
- Bouncy Bolson - bouncy
- Crystal Clemmys - crystal
- Dashing Diademata - dashing LTS 推荐学习
- Eloquent Elusor - eloquent
- Foxy Fitzroy - foxy LTS 即将发布
现有的ROS 1名称和代号:
- Boxturtle - boxturtle
- C Turtle - cturtle
- Diamondback - diamondback
- Electric Emys - electric
- Fuerte - fuerte
- Groovy Galapagos - groovy
- Hydro Medusa - hydro
- Indigo Igloo - indigo LTS
- Jade Turtle - jade
- Kinetic Kame - kinetic LTS
- Lunar Loggerhead - lunar
- Melodic Morenia - melodic LTS 推荐学习
- Noetic Ninjemys - noetic LTS 即将发布
ROS2适合商用,并且很多收费项目非常赞!!!比如:
Link ROS,这是一套可以在世界任何地方通过任何网络连接(防火墙、手机连接、WiFI、登录屏幕...........)查看来自ROS的数据和控制机器人的工具。刚刚在Product Hunt上上线,使用促销代码PRODUCTHUNT免费赠送一个机器人一年。
之前在做大型11DOF清洁服务机器人的时候,在WiFi连接不好的地方工作过。体会那种坐在现场机器人旁边,拿着屏幕、键盘、鼠标插在机器人上,试图重现已经发生过几次的BUG。知道第一手资料是多么难。
- 获得一个稳定的ssh连接,甚至是设置好它,尤其是在部署地点的现场。
- 在你的数据包中获取正确的数据,将其共享到另一台计算机上,并将其可视化。
- 当你的机器人出现问题时,远程控制你的机器人。
见过一次又一次地解决了这些问题,但很少有人能正确地解决。目标是一劳永逸地解决这个问题。支持ROS开箱即用,单线安装。拥有所有的数据。有一个前端应用,但是先做API,所以你可以把你的应用也挂到它上面。
- 安装文档 - 单行安装
- 日志设置文档 - 监控教程
- 带宽调整 - 调整到低速连接或千兆以太网上运行
ROS连接
如果要使用启动脚本,播放ROS程序包或运行ROS节点,则无需执行其他任何操作。您的数据将自动开始上传到云端!在这里,我们将通过一个最小的示例向您展示更多有关其工作原理的信息。
没有ROS吗?
如果你想测试出ROS的例子,并没有安装ROS(或使用的是Mac),运行以下命令来访问自由泊坞游乐场:docker run -it frdmrobotics/playground bash
。您需要apt-get install nano
(或您最喜欢的编辑器)。
Freedom自动旋转一个节点(名为link_ros
)以自省使用ROS发布的主题。启动某些内容并开始发布以进行检查-ROS袋也可以工作!
数据将显示在STREAM仪表板的Freedom App中。
ROS2:
-
# Launch your own nodes and the Agent will automatically
-
# start a node (link_ros) that listens to what is published.
-
# Make sure to source your ROS workspace before launching.
-
-
ros2 launch my_package my_launch.launch
ROS2 Bag:
-
# Not many good quality ROS2 bags exist yet - here we show a
-
# workaround with a ROS1 bag run in ROS2
-
-
# Make sure you have installed ros2 bag packages
-
apt-get update
-
sudo apt-get install ros-dashing-ros2bag-* ros-dashing-rosbag2*
-
-
# Source ROS1 workspace first
-
source /opt/ros/melodic/setup.bash
-
-
# Now source ROS2 workspace
-
source /opt/ros/dashing/setup.bash
-
-
# Download a ROS bag to play, saving it as rosbag-example.bag
-
curl -L -o rosbag-example.bag https://bit.ly/freedom-rosbag-example-car
-
-
# Play the ROS bag and the Agent will listen to the topics it publishes
-
ros2 bag play -s rosbag_v2 rosbag-example.bag
发送和接收消息
我们将通过一个示例演示ROS节点如何既可以将消息发送到Freedom,又可以响应从Freedom API发送的命令。
设置一个节点创建一个名为的文件,demo_node.py
并复制下面的代码。
ROS2:
-
#!/usr/bin/env python
-
-
# Please note that there are no references to Freedom in this ROS node.
-
# The ROS Shadow node will automatically interact with this node and
-
# stream the data.
-
-
import time
-
import rclpy
-
import rclpy.logging
-
from std_msgs.msg import String
-
from sensor_msgs.msg import NavSatFix
-
-
logger = rclpy.logging.get_logger('node_logger')
-
-
# Create a callback to handle this topic
-
def callback(data):
-
logger.info("I heard {}".format(data.data))
-
if data.data == "mission":
-
logger.info("Running mission...")
-
elif data.data == "shutdown":
-
logger.info("Received shutdown command")
-
rclpy.shutdown()
-
-
# There is nothing you need to do. The ROS Shadow node
-
# will automatically start when this starts
-
if __name__ == '__main__':
-
rclpy.init()
-
-
node = rclpy.create_node('node_name')
-
-
subscription = node.create_subscription(String, 'commands', callback, 10)
-
-
# Create our satellite GPS location topic
-
pub_nav = node.create_publisher(NavSatFix, 'location', 10)
-
nav_msg = NavSatFix(latitude=37.778454, longitude=-122.389171)
-
-
rclpy.spin(node)
-
-
while rclpy.ok():
-
pub_nav.publish(nav_msg)
-
time.sleep(1)
-
-
# Destroy the node explicitly
-
# (optional - otherwise it will be done automatically
-
# when the garbage collector destroys the node object)
-
node.destroy_node()
-
rclpy.shutdown()
使用以下命令启动节点。
-
# Source ROS2 workspace
-
source /opt/ros/dashing/setup.bash
-
-
# Execute created script with python3 (mandatory for ROS2)
-
python3 demo_node.py
您的机器人现在正在报告其位置,同时耐心等待远程命令!您可以在STREAM仪表板的地图上查看其位置。
本示例旨在向您展示使用ROS与Freedom连接的基础知识。通常,您应该构建一个ROS程序包,使用Catkin或Colcon进行编译,并使用ros2 run
或ros2 launch
,而不是如上所述地独立运行ROS节点。
测试回调
为了检查回调是否有效,我们将使用Freedom的REST API将命令发送到您的设备。
首先,在Freedom App中选择设备,然后导航至SETTINGS→DEVICE。在“ 接口”部分中,选择ROS(对于ROS1)或ROS2。
接下来,如果您尚未登录,请单击此页面右上角的“ 登录”,以便在此示例中,我们可以填充您的令牌,密码,帐户和设备的值。登录后,运行以下命令:
ROS2:
-
TOKEN="MY_TOKEN"
-
SECRET="MY_SECRET"
-
ACCOUNT="MY_ACCOUNT"
-
DEVICE="MY_DEVICE"
-
HEADERS="-H content-type:application/json -H mc_token:$TOKEN -H mc_secret:$SECRET"
-
DATA="[{
-
\"platform\": \"ros\",
-
\"utc_time\": `date +%s`,
-
\"topic\": \"/commands\",
-
\"type\": \"std_msgs/msg/String\",
-
\"expiration_secs\": 10,
-
\"message\": {\"data\":\"mission\"}
-
}]"
-
-
curl -v $HEADERS -d "$DATA" -X PUT "https://api.freedomrobotics.ai/accounts/$ACCOUNT/devices/$DEVICE/commands"
该消息将在您设置的回调中接收。一旦您的机器人接收到该命令,它将记录日志Running mission...
。
更改mission
为shutdown
并发送新命令。您的应用程序现在将远程关闭。
成功!您现在知道了如何使用Freedom通过云上传数据并与您的机器人通信。
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/106164908
- 点赞
- 收藏
- 关注作者
评论(0)