当前位置:网站首页>【CoppeliaSim4.3】C#调用 remoteApi控制场景中UR5
【CoppeliaSim4.3】C#调用 remoteApi控制场景中UR5
2022-07-03 07:23:00 【十年一梦实验室】

截图
视频演示
笔记:
一、场景脚本中添加代码,开启服务器:
function sysCall_init()
-- Start remote API server
local port=3000
simRemoteApi.start(port)
corout=coroutine.create(coroutineMain)
end二、C#客户度连接服务器,并获取关节句柄
_id = Api.Connect(textBoxAddress.Text, (int)numericUpDownPort.Value);
if (Api.IsConnected(_id))
{
for (int i = 0; i < _jointHandle.Length; i++)
{
_jointHandle[i] = Api.GetObjectHandle(_id, _jointPrefix + (i + 1));
}
}三、从安装目录拷贝include和remoteApi到C#项目,生成dll、lib

目录源位置

目录目标位置


生成的库拷贝到C#项目编译输出目录
四、C#调用C++库
using System;
using System.Runtime.InteropServices;
namespace CoppeliaSimCSharpAPI.TestForm
{
internal class Api
{
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int Connect(string address, int port);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int Disconnect(int id);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern bool IsConnected(int id);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int GetJointPosition(int id, int[] jointHandle, float[] position, int jointCount);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int GetObjectHandle(int id, string objectName);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int MoveJoint(int id, int[] jointHandle, float[] position, bool inTorqueForceMode, int jointCount);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int SendInfo(int id, string message, bool blocking);
}
}五、移动机械臂和获取位置
private void buttonMove_Click(object sender, EventArgs e)
{
var position = new float[]
{
(float)numericUpDownJ1.Value,
(float)numericUpDownJ2.Value,
(float)numericUpDownJ3.Value,
(float)numericUpDownJ4.Value,
(float)numericUpDownJ5.Value,
(float)numericUpDownJ6.Value
};
Api.MoveJoint(_id, _jointHandle, position, true, _jointHandle.Length);
}
private void buttonGetPosition_Click(object sender, EventArgs e)
{
var position = new float[6];
Api.GetJointPosition(_id, _jointHandle, position, _jointHandle.Length);
MessageBox.Show($"{position[0]}\r\n" +
$"{position[1]}\r\n" +
$"{position[2]}\r\n" +
$"{position[3]}\r\n" +
$"{position[4]}\r\n" +
$"{position[5]}",
"Now position");
}The End
边栏推荐
猜你喜欢

Map interface and method

Recursion, Fibonacci sequence

Use of file class

Leetcode 213: 打家劫舍 II

1. E-commerce tool cefsharp autojs MySQL Alibaba cloud react C RPA automated script, open source log

docker建立mysql:5.7版本指定路径挂载不上。

Pat grade a real problem 1166
![[set theory] partition (partition | partition example | partition and equivalence relationship)](/img/f0/c3c82de52d563f3b81d731ba74e3a2.jpg)
[set theory] partition (partition | partition example | partition and equivalence relationship)

Topic | synchronous asynchronous

Discussion on some problems of array
随机推荐
The underlying mechanism of advertising on websites
Some basic operations of reflection
Introduction of buffer flow
691. Cube IV
Some experiences of Arduino soft serial port communication
树莓派更新工具链
Download address collection of various versions of devaexpress
Operation and maintenance technical support personnel have hardware maintenance experience in Hong Kong
《指环王:力量之戒》新剧照 力量之戒铸造者亮相
Jeecg request URL signature
1. E-commerce tool cefsharp autojs MySQL Alibaba cloud react C RPA automated script, open source log
Use of other streams
IP home online query platform
Win 2008 R2 crashed at the final installation stage
[most detailed] latest and complete redis interview book (50)
专题 | 同步 异步
[solved] unknown error 1146
不出网上线CS的各种姿势
Chrome 98 Private Network Access problem w/ disabled web security: Request had no target IP address
Thoughts on project development