solidworks 转 urdf文件
介绍urdf文件是用于ROS中实体模型仿真的文件,可通过编程实现,也可使用solidworks画出模型后,导出urdf文件。我此次是将机械臂的模型导出。
转成下面的rviz中打开的仿真图,可通过ROS进行控制机械臂的运动
一、环境使用sw导出,需要先下载urdf.exe文件 http://wiki.ros.org/sw_urdf_exporter由于urdf.exe目前只适配2021以前的sw,因此我这里用了sw2020版本的,urdf.exe直接安装即可。
工具栏里有这个就是安装成功了。
二、建立坐标系、基准轴这一步最为关键! 模型复杂的不可以用自动建立坐标系的方法去导出urdf,否则会无法正确控制、我一直试了十次!才终于成功了
每个关节需要一个坐标系,坐标系必须和所在关节建立联系,不能参考其他的关节。
先将关节“独立出去” 再其寻找旋转轴,如电机法兰盘
最好以z轴为旋转轴。选取的坐标原点最好在模型外壳上,方便后续导出时减少stl文件,当然 只能选取模型外壁的stl模型,内部的模型选上后会导致 mesh文件夹下的stl文件为空。
三、导出
导出完后,可再次打开u ...
STM32CubeMX HAL库问题总结
一、串口重定向发现正常发送函数可用,但使用重定向不能使用,检测keil下载设置中
这里要打勾
二、HAL库串口接收 结束字符在库函数中就很简单,接收一个字节就进入串口中断去检测其数据,写通信协议很方便,如下
但是在HAL库中他进行了包装,增加了发送中断,和接收回调,直接接受完指定长度的数据后进入回调函数,就没必要按库函数那么写了
当然非要按库函数那么写,可以在中断复位函数的HAL_UART_Receive_IT(&huart2, (uint8_t *)&RxBuffer, LENGTH);LENGTH长度配置为1,这样接收一个字节就进入回调函数了,就跟库函数一样了,但显然这样就没意义了。没有发挥HAL库的方便。
我在实际使用后,回调函数这个真难用啊,只能接收长度,不能定义结束字符,还得再找到USART1_IRQHandler(void) 函数自己重新定义。不然只能把长度改为1,当中断函数使了。。。
看来得学习DMA了呀!
42步进电机+drv8825驱动
一、42步进电机
1、简介
42步进电机又叫Nema17 步进电机,42和Nema17都是指长度
42mm指的是转轴那一面的尺寸,步进电机的长度有好多规格,长度越长劲儿越大,看下表
2、接线
4根线,四线两相,指A+ A+ B+ B- 两对
A+ A- 在一条线上串联,通电时相当于电磁体,A B交互通电让中间的永磁体跟着电磁铁的方向转动。该42步进电机的转子是50齿,除了A B 两对电磁体还有两对, 应该是让永磁体停止转动的吧,搭配转子的50齿使得一个脉冲转一个齿就停止,从而实现一步为1.8度吧 好像是。如果是细分的话,就是驱动器的功劳了,他会在这个1.8度之间再进行细分,大概是根据A B不同磁性的强度来控制永磁体的位置,类似拔河。
二、驱动器
了解了下,现在的步进电机驱动确实厉害,之前用过的TB6600真是又大又笨,像TMC2209模块都可以进行串口控制步进电机的转速那些了,确实可以,当然也可以买集成在42步进电机底部的闭环驱动板,直接集成了ESP32、和霍尔检测电机位置、转速。
1、DRV8825驱动模块
我选择这个是看到他比A4988强些,我选的42步进电机 40 ...
ros笔记
指令创建工作空间创建工作文件夹 mkdir -p catkin_ws/src初始化 catkin_init_workspace
编译 catkin_make
设置环境变量 source devel/setup.bash
launch启动 roslaunch ur3 display.launch
问题总结gazebo 运行问题汇总1、在VM虚拟机运行中报错“VMware: vmw_ioctl_command error 无效的参数.”首先第一个VMware: vmw_ioctl_command error 无效的参数的问题。这应该是虚拟机的bug,毕竟使用虚拟机和真实的物理机上是有差别的。这有三种解决办法:
第一种:关闭虚拟机的3D图形加速
在编辑虚拟机选项中关闭3D图形加速
第二种:环境变量中设置
在运行之前,提前在终端执行以下命令:export SVGA_VGPU10=0
第三种,仅在launch文件中加入 <env name="SVGA_VGPU10" value="0"/>
报错”[Err] ...
云母色选机PLC代码详解
6ac8868b32d665124b35b270e095c5af3726a0b6274c811ad23f06846cc4427fbe2440bfbb7192c051f4cd89460498a10c39b8f5e65a08beadacf8d66e525af182a27e49025df1fd2b5dd6b714fca3fe843d06619f8b9d9e3046f1ca0fb2b8b046442af05422f6741954d69fe400836ac0f7aebf8166e7b78274904d5da8faadfb0f77974d4d3b67414f5ea29bf01e854634d2f213ab9151e63b0e7eeb2e1d9ea6887d6e611bb9abb1edbdb91dbe29b149620d7d13f2d5a59da3821cc144b1e41fc293cb83a9ca1c21c16b56001c8640b87f21556ce9d014bb5015cafa00cffaf7df81c9192215628714161d601582d657e7624bb182c346c ...
streamlit 网页端opencv图像处理
streamlit 简介Streamlit是一个用于创建交互式Web应用程序的Python库。它的主要目标是使数据科学家能够快速轻松地搭建和部署机器学习模型、数据可视化和演示等应用。以下是Streamlit的一些核心特点和优势:简单易用:Streamlit提供了简洁直观的API,使得创建Web应用变得非常简单。只需使用少量的Python代码,就能够构建交互式应用程序,无需繁杂的前端开发经验。实时更新:Streamlit支持实时更新,即当修改代码后,应用程序会自动重新加载,并且可以即时看到修改后的效果,方便进行迭代开发和调试。内置组件:Streamlit提供了各种内置组件,可以方便地构建用户界面,包括文本输入框、下拉菜单、按钮、图表等,使得用户与应用程序进行交互更加灵活。多媒体支持:Streamlit内置了对多媒体内容的支持,可以轻松地显示图像、音频和视频等,方便展示和分析多媒体数据。部署简单:Streamlit应用程序可以非常容易地部署在各种平台上,包括本地服务器、云服务器以及各种云服务提供商(如Heroku、AWS等),使得应用的分享和展示变得非常便捷。总之,Streamlit是一个 ...
esp32cam和esp-eye 视频流http网络传输
介绍 esp33cam与esp-eye开发板,其实使用起来是差不多的,我最开始是使用的esp32cam,但是这个板子问题很多,不管是下载程序,还是图像质量,都存在很大的问题,一年内我用了三次esp32cam 每次都折腾很久,每次出现新的问题,走了不少弯路,最后这次调通esp32cam后,还是果断放弃了使用esp32cam,选择了乐鑫官方的 esp-eye板子。
esp32cam的坑踩坑!!!
市面上的esp32cam鱼龙混杂,都是盗版,问题很多,我买了两块板,第一块最开始可以插上他配的地板下载程序,前两次使用可以下载,最后一次就不行了,第二块esp32cam插上地板纯粹不能下载程序。 之后我是用ttl下载器烧写程序
通过ttl下载程序就是将ttl与板子的串口相连接,进行通信,板子上的Io0引脚控制下载程序,Io0接地,板子进入下载程序阶段,此时可以通过adruino软件进行下载程序,下载完程序后,将Io0置高电平,即可正常运行。 坑1:esp32cam板子 Io0旁边的GND引脚有问题,不是连接的地,需要换个GND引脚 坑2:如果使用底板供电,会导致画质中间 ...
opencv 人体姿态识别
人体姿态识别算法 这个算法是在opencv的扩展库里,所以操作起来很方便
创建python环境 以及opencv我使用的是在conda创建的虚拟python环境,也可以直接在windows/或者linux安装python环境,python安装opencv库的话相当简单,只需一条命令即可。
pip install opencv-contrib-python 这个是opencv的拓展库 包含基础库
直接运行下面源码即可 python3 xxx.py
源码功能是实现对摄像头的画面进行处理,识别,所以使用前先插入个USB摄像头,或者自带的摄像头人体姿态模型 https://yun.laohu.space/share/A0avvXhT
import cv2 as cvimport numpy as npimport argparseparser = argparse.ArgumentParser()parser.add_argument('--input', help='Path to image or video. Skip to capture ...
c++ 串口通信-发送数据
一、安装VS软件,安装的时候选择 c++编译器,即可直接创建完c++环境
先添加下面的串口两个文件,之后在main.cpp中调用函数即可使用串口
if (w.open("COM7")) //串口初始化,选择合适的com口{ cout << "打开成功" << endl; cout << "在这里我发送:恭喜发财" << endl; w.send("恭喜发财"); //串口发送函数 //w.close(); //串口关闭函数}
readport.cpp内容如下:
#include "readport.h"#include <stdio.h>#include <string.h>#include <WinSock2.h>#include <windows.h>WZSerialPort::WZSerialPort(){}WZSerialPort ...
linux板上运行yolov5 目标检测
前言 YOLOv5 是一个目标检测算法,它是由 Ultralytics 开发的基于深度学习的实时目标检测框架。我这里主要是想在 orangepi5 plus板子上实现目标检测。
我所使用的配置和环境:1、linux板子(orangepi5 plus 16G)2、linux操作系统(ubuntu22.04)3、USB摄像头
如何使用yolov5 yolov5是基于python开发的,他的使用有些类似opencv的使用,首先要给他创建python环境,最好是用Anaconda+Pycharm的环境结构,他是通过构建一个python的虚拟环境,类似虚拟机,然后在这个环境下安装yolov5的虚拟环境。看到也有使用docker跑yolov5的,那样更简单。 我之前以为Anaconda像docker一样,创建的容器互不影响,没想到他巨垃圾,他不同镜像之间的库是公用的,也就是你在一个镜像里升级一个库,那么如果其他镜像中也有这个库,那这两个库的版本会保持一致,很恶心,你想测试在不同版本下的运行情况就行不通了。
ubuntu环境下测试现在办公室的闲置主机上跑yolov5训练,之后将程序移植 ...