# RoboDolf Software (RDS)
![RoboDolf](images/robodolf.png "RoboDolf vehicle in trials in Belize")
The RoboDolf is an electric robot boat designed to conduct acoustic dolphin
research in Belize. Acoustic and visual recording of dolphins is conducted to
study dolphin vocalization gain insights into complex dolphin socialization.
A robotic boat platform that was silent and had minimal visual impact on natural
dolphin behavior was required, and drove the specifications for the RoboDolf.
The RoboDolf is an unmanned surface vessel (USV) that was built on a 16' long
SeaCycle catamaran platform. It has a LiFePo4 battery bank powering two modified
electric thrusters in a differential thrust configuration. It has two
communication radio systems, a long range 900 MHz radio for basic telemetry and
a 2.4GHz 802.11 link for a full data/video link. The vehicle can operate under 3
different modes. A manned mode with an operator on-board controlling the vehicle
with an xbox controller; under shore remote mode; and under autonomous mode. The
vehicle has a host of instruments and sensors along with 4 actuated instrument
pods that can be automatically raised and lowered into the water. The vehicle
and field OPS systems where shipped to a remote atoll off the coast of Belize
and where it successfully operated.
For a video of its construction and operation [click here](https://youtu.be/pHH6SKcS8ms).
In this repo, the software system powering the RoboDolf is supplied. The system
was written by Paul Sammut in LabVIEW using the Actor Framework and LV-OOP. A
custom message routing and subscription layer was written on top of the Actor
Framework that facilitated a one-to-many node communication system. A class
structure was created to facilitate the writing of common nodes, such as
controllers and serial instruments. This system is called the RDS Framework.
This project was made possible by the sponsor Dr. Marcelo Magnasco at the
Rockefeller University and Eric Angel Ramos who runs the dolphin research
programs in Belize.
***Quick Note: If coding anything like this, do it in ROS :)***
## RDS Framework Architecture
The RDS Framework makes heavy use of LV-OOP and the Actor Framework. Each major
function of the RoboDolf is written as a nested child actor object that inherits
from a special RDS Parent Actor class. This allowed for the creation of
node-like processes that run independently of each other, but can easily share
data between each other in a structured way.
The system works on a one to many publisher/subscribers principle. Each actor
subscribes to a list of message types on launch. During run-time the actor can
send whatever messages it likes. Logic code can be written on receipt of the
messages, on an internal actor loop or by some other means such as on receipt
of hardware events.
![RDS Framework Architecture](images/RDS_framework.png)
This framework was written because the LabVIEW Actor Framework does not have
native functionality for one to many message broadcasting. Each actor must have
access to a queue handle for any actor it wants to send messages to. This was
overcome by creating an actor called the RDS Router, and by creating an RDS
Parent class that has functionality to subscribe to a list of messages; send
messages to the router; and receive messages from the router. In this way, each
actor only needs to have the queue handle of the RDS Router Actor, sending it
messages and not worrying about who needs to see them. All messages are wrapped
in an RDS Message class which allows the RDS Router to handle them regardless of
their specific type implementation.
This framework allows for all common functionality to be shared across actors and
allowed one developer to be able to quickly code the robotic sub-systems.
Operational overhead was minimal and all inter-actor communications was handled
by performant LabVIEW queues, and implemented in the battle-tested LabVIEW Actor
Framework.
## RDS Actors
RDS comprises the following actors:
- [RDS Router Actor](#rds-router-actor)
- [AIP Actor](#aip-actor)
- [Port Motor Actor](#mcb-motor-actor-port-and-stbd)
- [STBD Motor Actor](#mcb-motor-actor-port-and-stbd)
- [Battery Manager Actor](#battery-manager-actor)
- [Depth Sensor Actor](#depth-sensor-actor)
- [LSR Actor](#lsr-actor)
- [Logger Actor](#logger-actor)
- [Local Remote Actor](#local-remote-actor)
- [GPS Actor](#gps-actor)
- [Compass Actor](#compass-actor)
- [State Tracker Actor](#state-tracker-actor)
- [Helm Actor](#helm-actor)
- [Controller Actor](#controller-actor)
- [Mission Control Actor](#mission-control-actor)
### RDS Router Actor
The RDS Router handles all inter-actor communications. It operates on a
principle of subscriptions. Each actor sends the RDS Router an array of messages
it is subscribed to. This subscription is implemented as a boolean array, with
the index corresponding to a unique id that addresses each message. This list of
unique message ID's is implemented as a typedef. This boolean array, along with
the actor's message queue is packed into an RDS Subscription object and sent to
the RDS Router. This functionality, which is common to all RDS actor's is
implemented in the RDS Parent Actor class which all RDS Actors inherit from. The
following image shows a specific RDS Actor, in this case the Mission Control
Actor, being configured with mission control settings and message subscriptions
and being "launched and subscribed". In the launch and subscribe phase the RDS
Actor is launched, given the handle of the RDS Router queue (so it can send it
RDS messages) and having its subscription list sent to the RDS router, so then
RDS Router knows what messages it wants to receive.
![RDS Actor launch and subscribe](images/RDS_actor_launch_sub.png)
During run time, RDS Actors send messages to the RDS Router. The router receives
the messages, and through each subscription it has (one for every RDS Actor) and
checks to see if that actor is subscribed to that message ID. It does this by
simply indexing a boolean array, which takes O(1) time for each actor
subscription. If that boolean is true, it sends the message to the associated
message queue. Easy peasy!
### AIP Actor
The Actuated Instrument Pod (AIP) system is a set of 4 poles that can be
deployed into the water automatically by a linear actuator. It can monitor
deployed, deploying, stowed, and stowing states of each pod independently and
can also actuate each pod independently. The AIP actor is responsible for the
following:
- create and maintains a serial connection to the AIP system
- subscribe and monitor to AIP-command messages
- subscribe and monitor water-depth messages and automatically raise the AIP if water-depth is below a minimum
#### Subscriptions and Publications
The AIP Actor subscribes to:
* AIP Command Message
* AIP Set Min Depth Message
* Depth Data Message
The AIP Actor publishes these RDS Messages:
* AIP Status Message
### MCB Motor Actor (Port and STBD)
The Port Motor Actor is an instance of an MCB Instrument Class which inherits
from an RDS Instrument class. The RDS Instrument class is a descendant of the
RDS Parent Actor class, and adds serial communications functionality. This actor
can be set up to be a Port or STBD motor controller, which follows the DRY
principle for identical motor controller code. The motor controller is an
MDC1230 RoboteQ single channel 80A brushed motor controller.
![MCB port](images/MCB_port.png)
This actor is responsible for the following:
- create and maintain a serial connection to the specified motor controller (port/STBD)
- subscribe to motor messages and enact motor commands to appropriate serial commands
- read back state information about thruster, pack a motor state message and send it out
#### Subscriptions and Publications
The MCB Motor Actor subscribes to:
* MCB Command Message
The MCB Motor Actor publishes these RDS Messages:
* Motor Data Message
### Battery Manager Actor
![Battery pack](images/BTB_pac
没有合适的资源?快使用搜索试试~ 我知道了~
机器人控制.zip源码Labview个人项目资料程序资源下载
共1560个文件
png:1016个
vi:365个
lvclass:68个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 85 浏览量
2022-04-16
01:34:19
上传
评论
收藏 22.61MB ZIP 举报
温馨提示
机器人控制.zip源码Labview个人项目资料程序资源下载机器人控制.zip源码Labview个人项目资料程序资源下载机器人控制.zip源码Labview个人项目资料程序资源下载机器人控制.zip源码Labview个人项目资料程序资源下载 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目参考 3.适合小团队开发项目模型参考适合小团队开发项目模型参考
资源推荐
资源详情
资源评论
收起资源包目录
机器人控制.zip源码Labview个人项目资料程序资源下载 (1560个子文件)
RDS Project.aliases 46B
RDS Shore Remote.aliases 46B
Log Reader.aliases 44B
NMEA_GPGGA-data.ctl 33KB
NMEA_GPRMC-data.ctl 31KB
Battery Data.ctl 23KB
Helm Status Control.ctl 22KB
Mission Controller State Control.ctl 21KB
SR-J-State.ctl 18KB
NMEA_GPVTG-data.ctl 18KB
Depth Data.ctl 18KB
MissionOp.ctl 16KB
MCB Motor Status.ctl 16KB
Mission Controller Navigation State.ctl 15KB
Steering Command Cntrl.ctl 15KB
Controller Message Type.ctl 15KB
PID Gains Control.ctl 15KB
Mission Controller Settings.ctl 15KB
Controller.ctl 15KB
Mission Controller State.ctl 15KB
Helm State.ctl 15KB
AIP Address.ctl 15KB
Controller Address.ctl 14KB
RDS Message ID.ctl 14KB
COM Port Table.ctl 13KB
NMEA_LongitudeDirection.ctl 13KB
NMEA_LatitudeDirection.ctl 13KB
NMEA_GPS-Quality.ctl 13KB
Compass Data.ctl 13KB
NMEA_Mode.ctl 13KB
Heading Command Cntrl.ctl 12KB
Logger Header.ctl 12KB
AIP Command Control.ctl 12KB
RDS Instrument Enums.ctl 12KB
MCB Channel.ctl 11KB
RDS Configuration.ctl 11KB
Battery Data.ctl 10KB
AIP Status.ctl 10KB
Processed PA Block.ctl 10KB
Battery Status.ctl 9KB
AIP States.ctl 9KB
Robodolf Controller State.ctl 9KB
SR_Overview.ctl 8KB
AttitudeHandle.ctl 6KB
Raw RMC.ctl 6KB
RMC.ctl 6KB
Instrument COM Table.ctl 5KB
Throttles.ctl 5KB
SR_Thermal.ctl 5KB
PictureTypes.ctl 4KB
RDS Q Message.ctl 4KB
Cluster write test.ini 502B
COM_PORT_TABLE.ini 65B
RDS_CONFIG.ini 64B
unnamed.jpg 239KB
RDS State.lvclass 434KB
RDS Test Child.lvclass 320KB
RDS Mission Controller Actor.lvclass 126KB
RDS Local Remote Actor.lvclass 122KB
RDS Parent Actor.lvclass 112KB
RDS Helm Actor.lvclass 91KB
RDS Message.lvclass 72KB
GPS Data Message.lvclass 68KB
Helm Status Message.lvclass 68KB
RDS Serial Instrument Actor.lvclass 63KB
AIP Instrument.lvclass 62KB
RDS Child Receive Message Msg.lvclass 60KB
LSR Instrument.lvclass 60KB
Send RDS Message Over LSR Msg.lvclass 60KB
RDS Serial Handle Frame Msg.lvclass 60KB
RDS Serial Send Frame Msg.lvclass 60KB
RDS Router Subscribe Msg.lvclass 58KB
RDS Child Receive Message Msg.lvclass 57KB
RSD Msg Send To Router Msg.lvclass 57KB
RDS Serial Handle Frame Msg.lvclass 57KB
RDS Post Launch Init Msg.lvclass 55KB
Start Read Thread Msg.lvclass 54KB
AIP Status Response.lvclass 54KB
RDS Root Actor.lvclass 54KB
Battery Message.lvclass 54KB
RDS Router Subscription.lvclass 52KB
Mission Controller State Message.lvclass 50KB
RDS Router Actor.lvclass 49KB
Compass Data Message.lvclass 47KB
RDS Serial Instrument.lvclass 46KB
RDS Logger Actor.lvclass 44KB
Controller Send State Msg.lvclass 43KB
RDS Serial Frame.lvclass 42KB
Compass Instrument.lvclass 42KB
Mission Controller Send State Msg.lvclass 42KB
Mission Controller Cycle Msg.lvclass 42KB
MCB Instrument.lvclass 42KB
Send State Message Over LSR Msg.lvclass 42KB
Input Cycle Msg.lvclass 41KB
State Tracker Send Sample Msg.lvclass 41KB
Helm State Machine Cycle Msg.lvclass 41KB
RDS State Tracker.lvclass 40KB
Battery Instrument.lvclass 40KB
Controller Message.lvclass 38KB
MCB Status.lvclass 36KB
共 1560 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
资源评论
- m0_744167322023-01-03终于找到了超赞的宝藏资源,果断冲冲冲,支持!
yxkfw
- 粉丝: 81
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 微信自动抢红包APP.zip毕业设计参考学习资料
- 为 Wireshark 能使用纯真网络 IP 数据库(QQwry)而提供的格式转换工具.zip
- 音频格式转换工具.zip学习资料程序资源
- 自用固件,合并openwrt和immortalwrt编译AX6(刷机有风险).zip
- 最新GeoLite2-City.mmdb,GeoLite2-Country.mmdb打包下载
- 基于BootStrap + Springboot + FISCO-BCOS的二手物品交易市场系统.zip
- 使用Java语言编写的九格拼游戏,找寻下曾经小时候的记忆.zip
- gakataka课堂管理系统
- 一个简单ssh(spring springMVC hibernate)游戏网站,在网上找的html模板,没有自己写UI,重点放在java后端上.zip
- 一个采用MVC架构设计、Java实现的泡泡堂游戏.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功