文章目录

  • 通信
  • CANOPEN总线
  • 人机交互
  • socket通讯
  • 串口通讯
  • python编程小技巧
  • 硬件小知识

一般来说机器人平台包括:交互界面+主站+通讯协议+从站。


通信

  • TCP/IP、Http、Socket的区别

  • BS架构和CS架构的区别、CS架构和BS架构的区别
    BS的处理部分基本都集中在Server上,Browser只起到“浏览器”的作用。

  • 电机驱动器-copley 、copley-control-software-official
    copley驱动器上面有Canopen,RS232以及EtherCat这三种接口,其中RS232可以通过ASCII码值进行控制CME2是一种ドライバー設定/調整ソフトウェア,CML – C ++運動庫(收费)、CMO – Copley運動對象、CPL – Copley編程語言。
    更多的信息可以参考copley的官方微信公众号,这里给出CML - Copley提供的运动控制程序开发类库

【CME2和RS232的使用】:

  • 使用CME2配置Copley驱动器,带Maxon电机
  • CME上位机控制Copley驱动MAXON电机
  • ARM中FLASH和RAM、ROM的区别。普通的单片机主要用作程序存贮器就是FLASH,也就是替代以前的ROM,最大的优点是降低了芯片的成本并且可以做到电擦写。FLASH&ROM掉电保存,RAM掉电不保存。
  • RS-232 ASCII Motion Control - Using USB to RS-232 adapter with Copley Controls Drive
    % positon control page 28
    s r0x24 21
    s r0xca 1048576(20位编码器转一圈)
    t 1
    % read positon page 29
    g r0x32
    

【read digital inputs】可使用参数0xa6读取驱动器可编程数字输入的高/低状态。每个位表示下文所示的输入编号。如果输入量较高,则对应位设置为 1。如果输入量较低,则对应位设置为 0。例如,如果0xa6值为 33,二进制当量为 100001,则显示 IN1 和 IN6 较高,其他输入值较低。

g r0xa6

【read/set digital outputs】驱动器数字输出可由 CME 2 编程,以反映驱动器中任何一个或多个事件状态寄存位的状态。输出也可以配置,以便其状态可以由控制器程序设置。
外部控制器通过输出状态参数可以设置输出处于非活动状态或活动状态。但是,输出引脚的实际水平由输出配置参数决定。此参数将实际输出引脚设置为活动时的高或低。(when active, set high or low) 当驱动器启动或重置时,所有输出最初都是非活动状态。为了确保输出在启动或重置电源后处于高或关闭状态,应将输出配置为活动低输出。 (需要验证一下)

*可以考虑使用python自动生成ASCII码,ASCII码可以在 hyperterminal is ハイパーターミナルは、Microsoft Windowsシリーズに搭載されている端末エミュレータの名称である。通信ケーブルを経由して別の端末に接続して作業を行うことができる。ハイパーターミナルはHilgraeve社の端末エミュレータ製品HyperACCESSのローエンドバージョンである。Windows 95からWindows XPにバンドルされたが、Windows Vista以降のバージョンにはバンドルされていない。

  • Copley Controls USB to CAN using CME2

【关于canopen和EtherCAT】:

  • 【机器人实际控制】+EtherCAT总线技术+①概论 、有关CAN和CANopen的一些基本介绍
    一种总线技术,对每个节点进行遍历,存在反馈机制,CAN(最底层)->CANopen(应用)->EtherCAT(应用)
  • RS232、RS485、CAN、CAN Open、Modbus、UART、Ethernet、EtherCat、TCP/IP之间是什么关系、OSI(开放式通信系统互联参考模型)的七层、OSI 七层模型和TCP/IP模型及对应协议(详解)
  • 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)

【CML与canopen】:

  • 主要参考文档CANopen Programmer’s Manual和CML-Reference-Manual

【copley驱动器在Ubuntu环境下的配置】->在Ubuntu系统下Copley CAN-PCI驱动的安转和开机自启动配置

在Copley官网上下载CAN-PCI驱动,链接如下:
(http://www.copleycontrols.com/Motion/CanFiles/copleycan-1.02.0.tgz)
对程序包进行解压,使用以下指令:
tar xzf copleycan-1.02.0.tgz
解压后,建立一个驱动的源文件夹,并进入到该驱动的目录路径下,使用如下指令对驱动进行编译:
make
编译成功后,会在驱动文件加下生成名为copleycan.ko文件
为了将驱动嵌入到Linux运行的内核中,执行如下指令:
sudo insmod copleycan.ko
之后就可以对驱动进行安装了,执行如下指令:
make install
安装成功后,系统会检测到有CAN卡下系统中,在dev文件夹下生成copleycan00和copleycan01文件。
以下为驱动的开机自启动设置
1.创建一个 rules 文件
在/etc/udev/rules.d 文件夹中创建 copley.rules 文件
命令:cd /etc/udev/rules.d
sudo gedit Copley.rules
gedit 编辑器将会打开一个文本框,在其中输入如下
KERNEL==”copleycan*”,
MODE=”0666”
点击保存,关闭文档。
该 rules 文档的作用是在安装驱动的时候将 copleycan.ko 文件拷贝到
/lib/modules/3.13.0-32-generic/misc/copleycan.ko 目录下,红色部分为 linux 内核版本,以机
器系统版本为准,红色部分仅供参考。
2.让命令终端开机时将 copleycan 驱动加载到系统内核
sudo gedit /etc/copleycan.script
编辑器将打开一个文本框,在其中加入如下代码(红色部分以实际系统版本为准)
insmod /lib/modules/3.13.0-32-generic/misc/copleycan.ko
然后设置命令终端 //16.04版本
sudo gedit /etc/rc.local
编辑器将打开一个文本框,在 exit 0 之前添加如下代码
sh /etc/copleycan.script

permission issue:

sudo chmod -R 666 /dev/copleycan*

其中参考了:.rules文件创建
【一些常用术语的解释】:

  • BOM(物料清单)
  • PLC里面的主站和从站是什么

CANOPEN总线

  • CANOpen系列教程
  • CanFestival

人机交互

这里的人机交互主要定义为:输入和显示。输入为win10环境下的xbox手柄。
手柄:
可以用非官方蓝牙,但是只能链接一个手柄设备,之前用的是ps4手柄,这次是xbox手柄略有不同,链接过程中的问题见here,驱动是自动安装的其实就是蓝牙连接的案件位置不同,然后就是测试手柄,测试通过后下载pygame的轮子,注意对应版本

 pip debug --verbose

就可以开始编码了。可以参考:

  • pygame官网
  • python开发植物大战僵尸游戏用pygame框架

看门狗:为了保证节点的稳定性,需要增加看门狗功能,就是两个节点相互监控,一旦另一个节点死了就会立即重启对方,一个节点一旦运行不正常,那么另一个节点就将其重置。

  • python实现看门狗功能,用来实现对文件操作进行监测 ,这里偷师直接复制下来
from watchdog.observers import Observer
from watchdog.events import *
import timeclass FileEventHandler(FileSystemEventHandler):def __init__(self):FileSystemEventHandler.__init__(self)def on_moved(self, event):if event.is_directory:print("directory moved from {0} to {1}".format(event.src_path, event.dest_path))else:print("file moved from {0} to {1}".format(event.src_path, event.dest_path))def on_created(self, event):if event.is_directory:print("directory created:{0}".format(event.src_path))else:print("file created:{0}".format(event.src_path))def on_deleted(self, event):if event.is_directory:print("directory deleted:{0}".format(event.src_path))else:print("file deleted:{0}".format(event.src_path))def on_modified(self, event):if event.is_directory:print("directory modified:{0}".format(event.src_path))else:print("file modified:{0}".format(event.src_path))if __name__ == "__main__":observer = Observer()event_handler = FileEventHandler()observer.schedule(event_handler, "F:\ ", True)observer.start()try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()

cmd查看进程

tasklist | findstr “ptython.exe”

通过setproctitle方式似乎在windows下无效,只能先生成exe文件然后再相互之间监控了。
这里找到了一个监控进程的脚本。

import psutildef judgeprocess(processname):pl = psutil.pids()for pid in pl:if psutil.Process(pid).name() == processname:print(pid)breakelse:print("not found")if judgeprocess('xxx.exe') == 0:print('success')
else:pass

关于进程,主要参考了:(思路上有问题)

  • 如何在Python中产生一个新的独立进程
  • windows终端中类似于nohup的后台运行命令
  • 使用Python打开新的终端(terminal)并执行语句
  • 做了一个监控 windows 程序进行重启的小玩意儿,遇到个 bug。。。

其他参考:

  • Python 标准库
  • Python Timer定时器:控制函数在特定时间执行
  • python监控进程并重启
  • python中3种调用可执行文件.exe的方法

socket通讯

数据传输:使用socket通讯的方式,数据传输时要考虑到不同语言字符串转化对齐的问题

  • make client socket wait for server socket with Python
  • Socket Programming in Python (Guide)
  • Python 字符串前面加u,r,b,f的含义
  • Python socket 实现进程间通信
  • Python Socket实现心跳监测
  • python之struct详解
  • struct
  • python socket编程(传输字符、文件、图片)
  • Python3 网络编程

这里还是强推 Boost.Asio

【对齐问题】

  • Python使用struct处理二进制(pack和unpack用法),翻译自官方文档->struct — Interpret bytes as packed binary data
  • 大端、小端和内存对齐问题

串口通讯

  • ROS下串口通讯github源码
  • 利用socat和cutecom实现Linux虚拟串口通信
  • 如何分辨串口,Ubuntu下的CuteCom串口详细调试教程
  • ASCII码与16进制转换对照表
  • C++中int与string的相互转换
    如果要剔除开头或结尾的几个字符可以先利用初始化,然后再利用stoi
std::string s(data,1);
data=std::stoi(s,0,0);

python编程小技巧

python比较菜,因此记录一些编程中遇到的问题。

  • Python程序退出: os._exit()和sys.exit()
  • try except Exception as e 检查异常
  • Python try except else finally的执行过程
  • python内置函数之staticmethod() 函数
  • python-socket-服务端一对多客户端断线自动重连,自动收发消息示例
  • Python list中选择满足某种条件的数据操作
  • Python列表(list)
  • python list 查找与过滤方法整合
  • Python使用struct模块进行文件传输
  • C++和python使用struct传输二进制数据结构来实现
  • Python使用struct处理二进制
  • python编写串口通信
  • Python Qt

硬件小知识

  • 交换机和路由器的区别?

【硬件】机器人平台搭建相关推荐

  1. 机器人平台搭建(一)——机器人的组成

    机器人平台搭建(一)--机器人的组成 目录 总述 1.执行机构 2.驱动系统 3.传感系统 4.控制系统 总述 机器人是一个机电一体化的设备,从控制的角度来看,机器人系统可以分成四大部分.即执行机构. ...

  2. 从零搭建ROS机器人平台

    0.声明 本系列文章,仅介绍如何搭建ROS机器人平台,即机器人和ROS打通关系,通过ROS与机器人硬件STM32通信,并且在ROS层发布机器人tf和odom,并且做了简单的建图和导航测试. 之后的内容 ...

  3. nao机器人Python+pycharm+naoqi平台搭建

    一.机器人准备工作 1.打开nao机器人,点击前端的开始按钮,机器人播报自己的IP端口号 2.用网线连接nao机器人和笔记本(笔记本自带网线接口) 3.打开浏览器输入机器人的ip 4.出现登录界面输入 ...

  4. 大数据基础——Hadoop大数据平台搭建

    文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...

  5. 适配更多商用机器人平台,INDEMIND打造机器人底盘“2.0”

    在机器人热潮下,行业催生了大量的技术服务需求,机器人底盘便是其中新生品类之一.然而随着细分场景的持续落地,场景差异化带来的需求变化,让主打"通用"的机器人底盘已非万能公式. 通用不 ...

  6. 5G和AI机器人平台为工业4.0和无人机提供服务

    5G和AI机器人平台为工业4.0和无人机提供服务 Qualcomm 5G and AI robotics platform delivers for Industry 4.0 and drones 高 ...

  7. 5G和AI机器人平台

    5G和AI机器人平台 Qualcomm Launches 5G and AI Robotics Platform 高通技术公司(Qualcomm Technologies)周三推出了一款高级5G和人工 ...

  8. 机器人简化图画手绘图_高通推出全新RB3 机器人平台,年内支持5G连接

    在MWC 2019大会上,5G 成为了绝对的重量级主题.不过作为行业的佼佼者,高通不仅仅将重心放在处理器和基带上.外媒报道称,该公司刚刚发布了全新的 RB3 机器人平台.其采用基于骁龙的软件和硬件,旨 ...

  9. B端运营级视频服务技术平台搭建

    正文字数:4119  阅读时长:6分钟 本次LiveVideoStackCon 2020北京线下峰会我们邀请到了北京二六三企业通信有限公司技术总监李志涛来做分享.经过多年的打造,263云视频平台已经支 ...

最新文章

  1. C语言实现二进制文件读写
  2. linux进程中对信号的屏蔽,linux进程中的信号屏蔽
  3. 修改eclipse默认编码方式
  4. python unit test_Python Unittest
  5. [转载] Python字符串常用操作命令
  6. 绑定touch事件后click无效,vue项目解决棒法
  7. 多个pdf怎么合并成一个pdf?
  8. 流水号(自动编号)生成相关问题(并发、事务)及解决方案
  9. fences卸载_【设置方法】win10系统卸载fences的学习
  10. border 属性样式
  11. 思科服务器首页怎么修改,修改思科服务器cimc地址
  12. 蓝牙耳机什么样式最舒服?推荐一款好用的蓝牙耳机
  13. 跟随器为何要加反馈电阻?
  14. NOI 2016 游记
  15. StringUtils用法
  16. SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)
  17. android 流量的统计
  18. 100vh和100%的区别
  19. 9.二重循环:什么是二重循环???
  20. 安卓中两种压缩图片详解(比例压缩与质量压缩)

热门文章

  1. Python中range()函数的用法
  2. MySQL初级篇 | 修改MySQL密码的四种方法(适合初学者)
  3. 关于《半反去雾算法》一文的四宗罪。
  4. 偏差,残差,方差在机器学习中的区别
  5. 基于 React Native 的 58 同城 App 开发实践
  6. ROS2原始数据类型与接口
  7. 高精度加法 高精度减法 高度除法 高精度乘法 方法总结
  8. 计算机网络离不开光缆,无线网络论文.doc
  9. 详解最热门搜索引擎——ES
  10. hive指标计算:同比