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 1和2需要零代碼!

現在,您已經安裝了代理,每次運行ROS並開始將數據上傳到Freedom時,ROS Shadow節點都會打開。

ROS 1和ROS 2

Freedom同時支持ROS 1和ROS2。在設備上安裝代理程序時,在運行安裝腳本之前,請打開ADVANCED菜單並選擇適當的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 runros2 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...

更改missionshutdown併發送新命令。您的應用程序現在將遠程關閉。

成功!您現在知道了如何使用Freedom通過雲上傳數據並與您的機器人通信。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章