iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
DevOps

IoT Cloud Computing on robotic vehicle系列 第 13

[前置] 前端ROS Topic資料取得與呈現

  • 分享至 

  • xImage
  •  

在web前端我們簡單使用控制按鈕(button),呼叫ajax非同步去傳送JSON訊息到後端。如同之前所說,啟動車子需要initialpose(type geometry_msgs/PoseWithCovarianceStamped)與clicked_point(type geometry_msgs/PointStamped)兩個topics,每個topic的type格式(JSON格式)都不同,需要於ROS官方資料上先確認。
https://ithelp.ithome.com.tw/upload/images/20220928/20005722mYgbQNilVo.png
以下是前端頁面的事件觸發程式碼

  document.getElementById("mqtt_initialpose_pub").addEventListener('click', async function() {
    const payload = document.getElementById("mqtt_initialpose_text").value;
    await axios.post('/publish', {payload: payload, topic: "iot_initialpose"});
  });
  document.getElementById("mqtt_clicked_point_pub").addEventListener('click', async function() {
    const payload = document.getElementById("mqtt_clicked_point_text").value;
    await axios.post('/publish', {payload: payload, topic: "iot_clicked_point"});
  });

然後後端/publish負責真正將資料publish到mqtt上

app.post('/publish', (req, res) => {
  const payload = req.body.payload
  const topic = req.body.topic
  client.publish(topic, payload);
})

https://ithelp.ithome.com.tw/upload/images/20220928/20005722dLB6b1TXsy.png
(成大學生念誠提供)
另外也可透過scene builder(場景編輯器),從資料庫去讀取(接收)ROS topic map(type:nav_msgs OccupancyGrid.msg)資料,顯示地圖資訊在web上。
https://ithelp.ithome.com.tw/upload/images/20220928/20005722MPMgXNboWf.png
未來當小車每次在真實環境SLAM(同步定位與建圖)完畢後,使用者藉由web介面除了查看取得地圖結果以外,也能再進一步編輯原地圖將資料存放在資料庫中,提供往後虛擬環境(Unity)中使用。


上一篇
[前置]雲端NoSQL資料存取
下一篇
[DEMO] 實體小車的遠端操控 + WebRTC
系列文
IoT Cloud Computing on robotic vehicle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言