Both the sim.checkCollision function and the sim.checkDistance function return values of 0

Typically: "How do I... ", "How can I... " questions
Post Reply
cxj666
Posts: 12
Joined: 21 Nov 2023, 13:39

Both the sim.checkCollision function and the sim.checkDistance function return values of 0

Post by cxj666 »

Code: Select all

import time
from coppeliasim_zmqremoteapi_client import RemoteAPIClient
import numpy as np
client=RemoteAPIClient()
sim=client.getObject('sim')
# simOMPL=client.getObject('simOMPL')

sim.startSimulation()
while(1):
    UR5Handle=sim.getObject('/UR5')
    cuboid=sim.getObject('/Cuboid')
    result,collidingObjectHandle=sim.checkCollision(UR5Handle,cuboid)
    result2,distanceData,objectHandlePaire=sim.checkDistance(UR5Handle,cuboid,0.1)
    # result2,distanceData,objectHandle
    print(result)
    print(distanceData)
I use these two functions for collision detection and distance detection, but the return values are both 0

coppelia
Site Admin
Posts: 10375
Joined: 14 Dec 2012, 00:25

Re: Both the sim.checkCollision function and the sim.checkDistance function return values of 0

Post by coppelia »

Hello,

from what I can see, you are checking the collision/distance between the robot base and a cuboid. Also, the robot base you are referring to in not collidable/measurable by default. What you probably what to do instead, is to check for collision/distance between the whole robot (as a collection) vs the cuboid (which, by the way, also needs to be collidable/measurable):

Code: Select all

    ...
    UR5Handle=sim.getObject('/UR5')
    cuboid=sim.getObject('/Cuboid')
    robotCollection = sim.createCollection()
    sim.addItemToCollection(robotcollection, sim.handle_tree, UR5Handle, 0)
    result, collidingObjects = sim.checkCollision(robotcollection, cuboid)
    result2, distanceData, objectHandlePair = sim.checkDistance(robotcollection, cuboid, 0.1)
    ...
Cheers

cxj666
Posts: 12
Joined: 21 Nov 2023, 13:39

Re: Both the sim.checkCollision function and the sim.checkDistance function return values of 0

Post by cxj666 »

I have modified my previous code, but it will return an error to me. Below is my error and my code

Code: Select all

import time
from coppeliasim_zmqremoteapi_client import RemoteAPIClient
import numpy as np
client=RemoteAPIClient()
sim=client.getObject('sim')
# simOMPL=client.getObject('simOMPL')

sim.startSimulation()
while(1):
    UR5Handle=sim.getObject('/UR5')
    cuboid=sim.getObject('/Cuboid')
    robotCollection = sim.createCollection()
    sim.addItemToCollection(robocollection,sim.handle_tree,UR5Handle,0)
    result,collidingObjectHandle=sim.checkCollision(UR5Handle,cuboid)
    result2,distanceData,objectHandlePaire=sim.checkDistance(UR5Handle,cuboid,0.1)

    # result2,distanceData,objectHandle
    print(result)
    print(distanceData)
This is my error message
D:\anaconda\envs\coppeliasim2\python.exe C:\Users\CXJ\Desktop\碰撞检测代码测试\collection_check.py
Traceback (most recent call last):
File "C:\Users\CXJ\Desktop\碰撞检测代码测试\collection_check.py", line 13, in <module>
sim.addItemToCollection(robocollection,sim.handle_tree,UR5Handle,0)
NameError: name 'robocollection' is not defined

cxj666
Posts: 12
Joined: 21 Nov 2023, 13:39

Re: Both the sim.checkCollision function and the sim.checkDistance function return values of 0

Post by cxj666 »

This is my modified code, there are no errors, but its return value is still 0

Code: Select all

import time
from coppeliasim_zmqremoteapi_client import RemoteAPIClient
import numpy as np
client=RemoteAPIClient()
sim=client.getObject('sim')
# simOMPL=client.getObject('simOMPL')

sim.startSimulation()
while(1):
    UR5Handle=sim.getObject('/UR5')
    cuboid=sim.getObject('/Cuboid')
    robotCollection = sim.createCollection(1)
    sim.addItemToCollection(robotCollection,sim.handle_tree,UR5Handle,0)
    result,collidingObjectHandle=sim.checkCollision(UR5Handle,cuboid)
    result2,distanceData,objectHandlePaire=sim.checkDistance(UR5Handle,cuboid,0.1)
    time.sleep(0.5)

    # result2,distanceData,objectHandle
    print(result)
    print(distanceData)

coppelia
Site Admin
Posts: 10375
Joined: 14 Dec 2012, 00:25

Re: Both the sim.checkCollision function and the sim.checkDistance function return values of 0

Post by coppelia »

when calling sim.checkCollision or sim.checkDistance, you of course need to use robotCollection as argument 1...

Cheers

Post Reply